"""
__name__ 特殊的变量  保存的是当前执行的状态
如果我们执行运行py文件  呢么它的值为__main__
如果被导入执行的话，那么他的值是py文件名
"""
import os

import requests
from tqdm import tqdm


class BQGClient:
    def __init__(self):
        """
        初始化
        笔趣阁爬取类
        https://www.3bqg.cc/book/小说id/页数.html
        """
        self.url_temp = 'https://www.3bqg.cc/book/'

    def dowmload(self, book_id: int, dir_path: str, pages: list | range) ->None:
        """
        参数后面是指定参数的类型 在后面调用该方法时如果传入的参数错误会有提示   后面的'->None'表示返回值为None 无返回值
        下载指定小说的指定章节
        :param book_id:小说id
        :param dir_path:小说保存目录
        :param pages:要下载的章节列表
        :return:无
        """

        # 判断保存目录是否存在，不存在就创建
        # 使用os模块查找项目目录中是否有文件名为dir_path的文件
        # 如果没有就创建文件
        if not os.path.isdir(dir_path):
            os.mkdir(dir_path)
        # 获取要抓取的每页值
        for page in tqdm(pages):
            # tqdm模块能够显示进度条
            # 抓取每页文章书籍
            page = int(page)
            url = '%s/%d/%d.html' % (self.url_temp, book_id, page)
            # url=f'{self.url_temp}{book_id}/{page}.html'
            res = requests.get(url,
                               headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'})
            print(res.status_code)
            if res.status_code == 200:
            #保存到对应的文件中
                with open(rf'{dir_path}/{page}.html', 'w', encoding='utf-8') as f:
                    f.write(res.text)


# 如果是直接运行这个py文件的话，我们就执行if里面的程序
if __name__ == '__main__':
    # 在这里面写测试函数
    # 创建一个笔趣阁的爬取对象
    client = BQGClient()
    client.dowmload(60417,'道诡异仙',range(1,11))  #抓取前十篇文章




